﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages
{
    public partial class AddContatos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
               // Session["Sid"] = "60299";
                lblSupplier.Text = Convert.ToString(Session["Snome"]);
                CarregarDados();
            }
        }

        #region Popular Dados
        
        private void CarregarDados()
        {
            CarregarContatos();
        }

        private void CarregarContatos()
        {
            try
            {
                ContatoDAL c = new ContatoDAL();

                GridContatos.DataSource = c.ListarTodos(Convert.ToInt32(Session["Sid"]));
                GridContatos.DataBind();
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void PaginarDados(object sender, GridViewPageEventArgs e)
        {
            GridContatos.PageIndex = e.NewPageIndex;
            CarregarDados();
        }

        #endregion

        #region CRUD Contatos

        protected void SalvarContato(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text != "")
                {
                    LimpaCampos(this.Controls);
                    lblMsgAddContato.Text = "";
                    btnNovoContato.Text = "Salvar";
                    LimpaCampos(this.Controls);
                    txtNome.Focus();
                    return;
                }

                S_Contato c = new S_Contato();

                c.SCONT_nome = txtNome.Text;
                c.SCONT_telefone = txtTelefone.Text;
                c.SCONT_position = txtCargo.Text;
                c.SCONT_email = txtEmail.Text;
                c.S_id = Convert.ToInt32(Session["Sid"]);

                ContatoDAL s = new ContatoDAL();

                s.Salvar(c);
                lblMsgAddContato.Text = "Contato cadastrado com sucesso.";
                LimpaCampos(this.Controls);
                CarregarDados();
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = "Erro: " + ex.Message;
            }
        }

        protected void EditarContato(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    lblMsgAddContato.Text = "Selecione um contato para ser atualizado.";
                    return;
                }

                S_Contato c = new S_Contato();

                c.SCONT_id = Convert.ToInt32(txtCodigo.Text);
                c.SCONT_nome = txtNome.Text;
                c.SCONT_telefone = txtTelefone.Text;
                c.SCONT_position = txtCargo.Text;
                c.SCONT_email = txtEmail.Text;
                c.S_id = Convert.ToInt32(Session["Sid"]);

                ContatoDAL s = new ContatoDAL();

                s.Atualizar(c);                
                lblMsgAddContato.Text = "Contato atualizado com sucesso.";
                CarregarDados();
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = "Erro: " + ex.Message;
            }
        }

        protected void ExcluirContato(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    lblMsgAddContato.Text = "Selecione um contato para ser excluído.";
                    return;
                }

                ContatoDAL s = new ContatoDAL();
                S_Contato c = s.ObterPorId(Convert.ToInt32(txtCodigo.Text));
                s.Excluir(c);
                LimpaCampos(this.Controls);
                btnNovoContato.Text = "Salvar";
                lblMsgAddContato.Text = "Contato excluído com sucesso.";
                CarregarDados();
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = "Erro: " + ex.Message;
            }

        }

        #endregion

        #region Regras

        protected void GridContatos_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtCodigo.Text = GridContatos.SelectedRow.Cells[0].Text;
            lblMsgAddContato.Text = "";
            btnNovoContato.Text = "Novo";

            try
            {
                ContatoDAL c = new ContatoDAL();
                S_Contato s = new S_Contato();

                s = c.ObterPorId(Convert.ToInt32(txtCodigo.Text));

                txtNome.Text = s.SCONT_nome;
                txtTelefone.Text = s.SCONT_telefone;
                txtCargo.Text = s.SCONT_position;
                txtEmail.Text = s.SCONT_email;
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = "Erro: " + ex.Message;
            }
        }

        protected void LimpaCampos(ControlCollection controls)
        {
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextBox)
                {
                    (ctrl as TextBox).Text = string.Empty;
                }
                // ... demais controles que queira limpar

                LimpaCampos(ctrl.Controls);
            }
        }

        protected void Limpar(object sender, EventArgs e)
        {
            LimpaCampos(this.Controls);
        }

        #endregion


       

    }
}